package com.webflux.sample.webfluxmain;

import java.time.Duration;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import reactor.core.publisher.Flux;

public class _5_9operator_combinelatest {

  public static void main(String[] args) {
    // combineLatest操作符把所有流中的最新产生的元素合并成一个新的元素，作为返回结果流中的元素。
    // 只要其中任何一个流中产生了新的元素，合并操作就会被执行一次，结果流中就会产生新的元素。
    Duration du2 = Duration.of(100, ChronoUnit.MILLIS);
    Duration du3 = Duration.of(50, ChronoUnit.MILLIS);

    Flux.combineLatest(
        Arrays::toString, Flux.interval(du2).take(5), Flux.interval(du3, du2).take(8)).toStream().forEach(System.out::println);
  }
}
